package com.dragon.refect.clazz;

import java.util.Arrays;

/**
 *确定由该对象表示的类或接口实现的接口。
 * 如果此对象表示一个类，则返回值是一个包含对象的数组，这些对象表示该类实现的所有接口。数组中接口对象的顺序与该对象表示的类的声明的Implements子句中接口名称的顺序相对应。例如，给出声明：
 *
 * 如果此对象表示接口，则数组包含表示该接口扩展的所有接口的对象。数组中接口对象的顺序与该对象表示的接口的声明的extends子句中接口名称的顺序相对应。
 *
 * 如果此对象表示没有实现任何接口的类或接口，则该方法返回长度为0的数组。
 *
 * 如果此对象表示原始类型或void，则该方法返回长度为0的数组。
 *
 * 如果此Class对象表示数组类型，则按此顺序返回接口Cloneable和java.io.Serializable。
 * @author dragon
 * @since 2019/12/1
 */
public class ClassGetInterfacesTest {

    public static void main(String[] args) {
        Zi<Integer, String> zi = new Zi<>();
        Class<? extends Zi> ziClass = zi.getClass();
        System.out.println(Arrays.toString(ziClass.getInterfaces()));
        System.out.println(Arrays.toString(ziClass.getGenericInterfaces()));
    }
}
